This invention is generally related to computers and computer software, and more specifically is related to optimizing communications between computers of a network by balancing communication loads handled by such computers.
Computer technology continues to improve in the field of computer networks or networking. Networking refers generally to the scenario wherein several different remote computers are electronically connected together to communicate with each other. For example, computer networks are used to provide direct communication links between computer users having a common interest, such as employees of a corporation. Such networks are generally referred to as local area networks (LAN) or wide area networks (WAN). More recently, large public networks, more commonly collectively known as the Internet, are being utilized by computer users to access and communicate with large numbers of remote users and other remote networks. Indeed, computers and other devices of all types and from all over the world are being connected together through appropriate networks. As a result, networking of an ever greater number of devices together over a LAN, WAN, or the Internet requires enhancement of existing networking capabilities to ensure rapid, error-free communications.
The computers or other devices connected together through a network can include any electronic device that has the proper hardware and software to be compatible with the requirements of the network. Personal computers (PC""s) or workstations are usually one of the more prevalent devices coupled to and used on a network. Within a LAN or WAN, a server will also normally be utilized. A server is essentially a computer that can be used by a plurality of other remote computers, such as a plurality of PCs, or by a plurality of other remote devices, such as printers or disk drives, to further facilitate networking the various remote devices together. For larger networks, it is common to utilize multiple server computers to facilitate the operation of the network.
The processing speed of the network, and its ultimate usefulness, depends upon the ability of the various components or devices in the network to communicate with each other. The communication efficiency of the network servers is usually a particularly relevant factor, because the servers are often accessed by a large number of devices simultaneously. As the communication load on a server increases, the ability of that server to handle the communication tasks efficiently decreases. With multiple servers in a network, it would be desirable to balance the communication load over all of the servers so that one particular server is not overloaded. However, as discussed below, the prior art methods usually send network communication traffic predominantly to one server and then direct excess communication traffic to other servers only when the first server is overloaded.
The various devices of the network must communicate with each other, and therefore, each device must be able to understand each other device, even though the devices have different functions or are made by different manufacturers. In order to allow the various network devices to communicate with each other, networks such as LANs and WANs, use a common communications protocol which is shared by the various devices. A network communications protocol is a common set of hardware and software standards that must be implemented by the network devices so that they are linked together and can properly communicate or xe2x80x9ctalkxe2x80x9d to each other and other devices over the network. Various different network protocols are available.
One suitable network protocol establishes a communication session between devices in the network utilizing test frames that are sent over the network. For example, a remote device, such as a personal computer, might send an initiation signal in the form of a test frame to another device on the network, such as a server, in order to initiate a communications session with that server, and ultimately with another device in the network through the server. Each initiation signal, or test frame, will generally include a source address that indicates the source of the test frame (i.e., the PC), and a destination address indicating the device to which the test frame is sent (i.e., a server). For certain network protocols, the addresses associated with the various devices are referred to as xe2x80x9cMedium Access Controlxe2x80x9d addresses, or MAC addresses. In a particular network, multiple servers may share the same MAC address so that an initiation signal, in the form of a test frame, is sent to all of the multiple servers simultaneously. The destination devices, or servers, then answer the initiation test frame with a response signal, which could be in the form of another test frame. Generally, the computer which sends the initiation test frame will begin a communication session with the first server (of the multiple servers) from which it receives a response test frame. Due to signal propagation delays, and other delays associated with various electrical components in the system, such as network bridges and adapters, one particular server""s response test frame will usually reach the initiating computer before the test frames of any of the other servers. The initiating computer will usually choose the first test frame it receives and will therefore begin a communication session with the server that sent the fastest response. As a result, in most networks, one of the servers will handle most of the communications sessions until that server becomes overloaded, and then another server will handle such excess communication sessions.
In other words, in a network in which a plurality of remote personal computers accesses a plurality of redundant servers through a network, a single server""s test frames (response signals) are able to reach all remote computers first, and therefore that single server will maintain the significant portion of the communication load. The overloaded server then will not be able to process the network communications as rapidly as a server that is less utilized, and the network efficiency and speed is reduced.
In addition to imbalances between redundant servers of a network, there may also be imbalances in multiple paths to a single server. Specifically, multiple communication paths to a single server will each have characteristics that are associated with a communications workload. If one path has characteristics which make it the predominantly chosen path over other paths to a server, the path may become overloaded while other paths are underutilized. This may also reduce network efficiency.
As a result, there is a need for more efficient and rapid processing of network communications. More specifically, there is a need for balancing the communication load of a particular network over multiple devices or multiple communication paths. There is further need for accomplishing load balancing over a network without requiring significant changes to the network architecture or additional expensive network components. There is a still further need to achieve communication load balancing without significantly affecting the ongoing network communications.
The present invention addresses the above-referenced needs and other needs within the prior art by providing a method, apparatus, and program product for balancing communication loads over a network. In the network, one or more devices, such as PCs, are operable for sending initiation signals to other network devices, such as servers, in order to initiate communication with the servers. In accordance with the principles of the invention, the other network device, such as a server, sends a response signal in response to an initiation signal it receives. In that way, a communication session is established between the various network devices. Depending upon the communication traffic which is being handled by the responding device, the responding device may delay sending the response signal for a predetermined amount of time, based upon the communication traffic it is handling. In that way, communication traffic is balanced over the network, because the same responding device will not always send the quickest response to each initiation signal.
More specifically, in order to ensure that the same responding device does not provide the first response signal seen by various of the network devices trying to initiate a communication session, a responding network device will delay its response based upon the amount of traffic the responding device is currently handling. A delay occurs for a predetermined amount of time that is proportional to the communication traffic handled by the responding device. That is, as any particular responding device within a network handles more communication traffic in the form of additional communication sessions, the delay associated with that responding device will be longer. With each incremental change in communication traffic handled by the responding device, the delay will be further incremented. In that way, as a responding device handles a greater amount of network communication traffic, it will delay its response to initiation signals from other network devices, so that it does not receive as much new communication traffic. The new communication traffic is then spread to other responding network devices, such as other servers. The predetermined amount of time of the delay will continue to increment up to the full capacity of the responding device. In one embodiment of the invention, when the responding network device reaches full capactiy, it may add an additional delay to its already existing delay to further indicate to the network that the responding device is at full capacity.
In an alternative embodiment of the invention, no delay will occur until the responding device reaches its full capacity. To that end, a threshold might be set before any delay occurs at all. For example, a responding device in the network would not want to immediately delay its response if it is not handling any communications traffic. Therefore, a threshold level of communications traffic before the responding device would introduce a delay into its response scheme.
The present invention applies to devices within a network regardless of whether one device is inherently faster in responding to network initiation signals than other devices, or whether several or all of the devices have similar response speeds. In that way, the present invention may be utilized to progressively balance the communications traffic between the various network devices.